When a software program executes, the execution has to be monitored for a variety of reasons. For example, software execution may have to be monitored to determine a performance metric associated with an executing process, investigate an error, or troubleshoot a feature. Maintenance and tuning of the data processing system for certain types of workloads is another reason for monitoring software execution.